//用于缓存的个体封装
function NWqd_jiazaiPZ_gt(jzGJ, juese, jd, csM) {
    this.jzGJ = jzGJ;
    this.juese = juese;
    this.jd = jd;
    this.csM = csM
}
// 判断 这个【个体】是否我们要找的【个体】
NWqd_jiazaiPZ_gt.prototype.pd = function (jueseZhi) {
    return this.juese == jueseZhi;
}

/**
 * 装载参数（用户配置）
 * 装载html的PZ节点的配置,到dx中来
 * @param {对象} dx  用户的对象
 */
NWqd_jiazaiPZ_gt.prototype.zzCS = function (dx) {
    // dx对象里面，是否存在 协定方法：__hqCSlx
    // 这个方法 主要规定了 dx对象xx属性 属于什么类型。  
    // 比如，属性dx.a=null ，但a却是数字。 怎么办？ 通过 __hqCSlx(a) 返回 number 类型。
    let zhenjia = new Boolean(dx['__hqCSlx']);
    let lx;
    if (dx) {
        for (let ming in dx) {
            if (this.csM[ming] == undefined) {
                continue;
            }
            if (zhenjia) {
                lx = dx.__hqCSlx(ming)
                if (!lx) {
                    lx = typeof dx[ming];
                }
            }
            dx[ming] = this.hqCSzhi(ming, lx)
        }
    }
}


//获取参数 对象
NWqd_jiazaiPZ_gt.prototype.hqCSM = function () {
    return this.csM;
}
//获取参数 对象
NWqd_jiazaiPZ_gt.prototype.hqCSzhi = function (ming, lx) {
    if (!this.csM) {
        return undefined;
    }
    if (lx) {
        if (typeof this.csM[ming] == lx) {
            return this.csM[ming];
        }
        let _zhi = this.csM[ming];
        switch (lx) {
            case 'boolean':
                this.csM[ming] = this._zh_zhenjia(_zhi); break;
            case 'number':
                this.csM[ming] = Number(_zhi); break;
            case 'object':
                this.csM[ming] = this._zh_shiti(_zhi); break;
            // case 'string'://默认就是 string，所以，不可能到这一步。
            //     console.log('string=' + this.csM[ming]); break;
            // case 'undefined': //lx为真才到switch中来。这一步不可能
            //     console.log('undefined=' + this.csM[ming]); break;
            case 'function':
                if (!this.csM[ming]) {
                    return null;
                }
                try {
                    this.csM[ming] = eval(_zhi);//取nw_jx空间地址
                } catch (e) {
                    console.error('你在【弹出层-参数】对象里面，配置了不存在的函数名：' + this.sj)
                    this.csM[ming] = null;
                }
        }
    }
    return this.csM[ming];

}



//转换 实体
NWqd_jiazaiPZ_gt.prototype._zh_shiti = function (wb) {
    if (null == wb || wb == '') {
        return null;
    }
    return new Function('return ' + wb)();
}

//转换 真假
NWqd_jiazaiPZ_gt.prototype._zh_zhenjia = function (str) {
    if (null == str || str == '' || /^(false)|0$/i.test(str)) {
        return false;
    }
    return true;
}

//更新参数
NWqd_jiazaiPZ_gt.prototype.gxCSM = function () {
    this.csM = jzGJ.hqJDpz(this.jd);
}